ESP32之NVS操作

技术经验 dingxiao 阅读数:3279 2020年9月17日 19:24

ESP32之NVS操作

0x01-NVS

ESP32-WROOM-32芯片已自带非易失性存储器(Non-volatile storage,NVS),在ESP32内部存储4M存储空间被划分的区域为:

0d40a5e4a645fc6b96e767d64ac0878e-5

从上图中可以看出NVS空间大小为20KB,对于一般的应用这个容量已经完全足够支撑了,故在JS项目中将舍弃原有的E2PROM,改用NVS。

0x02-参考网址

NVS操作参考网址为:

1)https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/storage/nvs_flash.html   ----官方IDF支持库

2)http://okiraku-camera.tokyo/blog/?p=6023

3)https://github.com/TridentTD/TridentTD_ESP32NVS  ---最终使用的NVS库
0x03-自我实践

结合TridentTD_ESP32NVS库对NVS功能进行了操作,操作代码为:

#include "TridentTD_ESP32NVS.h"

void setup() {
 Serial.begin(115200); Serial.println();

 Serial.println("[ESP32] NVS start");
 NVS.begin();
 
//  Serial.println("[NVS] set object to NVS");
//  uint8_t mac[6] = {0xDF, 0xEE, 0x10, 0x49, 0xA1, 0x42};
//  NVS.setObject( "MAC", &mac, sizeof(mac) );  

//  Serial.println("[NVS] get object from NVS");
//  uint8_t* mymac;
//  mymac = (uint8_t*) NVS.getObject( "MAC");  
//  
//  Serial.printf("mac : %02X:%02X:%02X:%02X:%02X:%02X\n",
//                 mymac[0],mymac[1],mymac[2],mymac[3],mymac[4],mymac[5]);

//  String  ssid        = "wuyiyi";
//  String  password    = "3339061";
//  NVS.setString("SSID", ssid);
//  NVS.setString("PASSWORD", password);

 String  ssid_t        = NVS.getString("SSID");
 String  password_t    = NVS.getString("PASSWORD");

 Serial.printf("ssid        : %s\n", ssid_t.c_str());
 Serial.printf("password    : %s\n", password_t.c_str());

//  NVS.eraseAll();
 
}

有了NVS库的支持,对于项目中需要进行少量的数据存储及参数配置,NVS将十分方便。

配合wifi的smartconfig功能可快速实现wifi重要参数的配置及存储功能。




captcha
    暂无评论